package cn.jbolt.admin.xd.xdbillflows;

import com.jfinal.plugin.activerecord.Page;
import java.util.Date;
import cn.jbolt.core.bean.JBoltDateRange;
import cn.jbolt.extend.systemlog.ProjectSystemLogTargetType;
import cn.jbolt.core.service.base.JBoltBaseService;
import com.jfinal.kit.Kv;
import com.jfinal.kit.Okv;
import com.jfinal.kit.Ret;
import cn.jbolt.core.base.JBoltMsg;
import cn.jbolt.core.db.sql.Sql;
import cn.jbolt.common.model.xd.XdBillFlows;
/**
 * null管理
 * @ClassName: XdBillFlowsService
 * @author: wzx
 * @date: 2025-06-28 13:47  
 */
public class XdBillFlowsService extends JBoltBaseService<XdBillFlows> {
	private final XdBillFlows dao=new XdBillFlows().dao();
	@Override
	protected XdBillFlows dao() {
		return dao;
	}

	@Override
    protected int systemLogTargetType() {
        return ProjectSystemLogTargetType.NONE.getValue();
    }
		
	/**
	 * 后台管理数据查询
	 * @param pageNumber 第几页
	 * @param pageSize   每页几条数据
	 * @param keywords   关键词
	 * @param sortColumn  排序列名
	 * @param sortType  排序方式 asc desc
     * @param tradeTimeRange 交易时间 区间
     * @param type 类型：转账/支出/收入
     * @param outAccount 转出账户
     * @param inAccount 转入账户
     * @param state state
     * @param remark 描述
	 * @return
	 */
	public Page<XdBillFlows> getAdminDatas(int pageNumber, int pageSize, String keywords, String sortColumn, String sortType, JBoltDateRange tradeTimeRange, String type, String outAccount, String inAccount, Integer state, String remark) {
	    //创建sql对象
	    Sql sql = selectSql().page(pageNumber,pageSize);
	    //sql条件处理
        sql.betweenDateRange(XdBillFlows.TRADE_TIME,tradeTimeRange);
		System.out.println("===="+sql);
        sql.eq(XdBillFlows.TYPE,type);
        sql.eq(XdBillFlows.OUT_ACCOUNT,outAccount);
        sql.eq(XdBillFlows.IN_ACCOUNT,inAccount);
        sql.eq(XdBillFlows.STATE,state);
        sql.eq(XdBillFlows.REMARK,remark);
        //关键词模糊查询
		sql.likeMulti(keywords,XdBillFlows.OUT_ACCOUNT, XdBillFlows.IN_ACCOUNT, XdBillFlows.REMARK);
		//排序
		sql.orderBy(sortColumn,sortType);

		return paginate(sql);
	}
	
	/**
	 * 保存
	 * @param xdBillFlows
	 * @return
	 */
	public Ret save(XdBillFlows xdBillFlows) {
		if(xdBillFlows==null || isOk(xdBillFlows.getId())) {
			return fail(JBoltMsg.PARAM_ERROR);
		}
		boolean success=xdBillFlows.save();
		if(success) {
			//添加日志
			//addSaveSystemLog(xdBillFlows.getId(), JBoltUserKit.getUserId(), xdBillFlows.getName());
		}
		return ret(success);
	}
	
	/**
	 * 更新
	 * @param xdBillFlows
	 * @return
	 */
	public Ret update(XdBillFlows xdBillFlows) {
		if(xdBillFlows==null || notOk(xdBillFlows.getId())) {
			return fail(JBoltMsg.PARAM_ERROR);
		}
		//更新时需要判断数据存在
		XdBillFlows dbXdBillFlows=findById(xdBillFlows.getId());
		if(dbXdBillFlows==null) {return fail(JBoltMsg.DATA_NOT_EXIST);}
		boolean success=xdBillFlows.update();
		if(success) {
			//添加日志
			//addUpdateSystemLog(xdBillFlows.getId(), JBoltUserKit.getUserId(), xdBillFlows.getName());
		}
		return ret(success);
	}
	
	/**
	 * 删除数据后执行的回调
	 * @param xdBillFlows 要删除的model
	 * @param kv 携带额外参数一般用不上
	 * @return
	 */
	@Override
	protected String afterDelete(XdBillFlows xdBillFlows, Kv kv) {
		//addDeleteSystemLog(xdBillFlows.getId(), JBoltUserKit.getUserId(),xdBillFlows.getName());
		return null;
	}
	
	/**
	 * 检测是否可以删除
	 * @param xdBillFlows model
	 * @param kv 携带额外参数一般用不上
	 * @return
	 */
	@Override
	public String checkInUse(XdBillFlows xdBillFlows, Kv kv) {
		//这里用来覆盖 检测是否被其它表引用
		return null;
	}
	
}